package ar.com.jsejtman.common.security.credential.service;

import ar.com.jsejtman.common.persistence.dao.GenericDao;
import ar.com.jsejtman.common.persistence.exception.DaoException;
import ar.com.jsejtman.common.security.credential.entity.PasswordResetEmailContent;
import ar.com.jsejtman.common.service.definition.BaseService;
import ar.com.jsejtman.common.service.exception.EntityRetrievalException;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * Servicio para administrar el contenido de Emails de reinicio de clave.
 * 
 * @author jsejtman
 */
@Service
@Transactional
public class PasswordResetEmailContentService extends BaseService implements
        IPasswordResetEmailContentService {

	@Override
	public final PasswordResetEmailContent getContent() throws EntityRetrievalException {

		try {
			final GenericDao<PasswordResetEmailContent, Long> dao = this.getDaoFactory().newDao();

			/*
			 * Solamente obtiene el primer email. Se entiende que habrá uno solo. Este servicio
			 * probablemente deba ser modificado cuando comiencen a detectarse nuevos posibles
			 * envíos de Emails de notificaciones.
			 */
			final List<PasswordResetEmailContent> emailContent =
			        dao.getAll(PasswordResetEmailContent.class);

			if (emailContent == null || emailContent.size() == 0) {
				throw new EntityRetrievalException("No hay email por defecto en la base de datos.");
			}

			return (emailContent.get(0));

		} catch (final DaoException e) {
			throw new EntityRetrievalException(e.getMessage(), e);
		}
	}
}
